package imagekeeper.dmi;

import java.util.List;
import java.util.Date;

public class Image {
    private int id;
    // заголовок
    private String title;
    // описание
    private String description;
    // адрес изображения на сервере
    private String url;
    // ссылка для удаления анонимного изображения
    private String removingLink;
    // владелец изображения
    private User owner;
    // дата+время размещения изображения
    private Date uploadedTime;
    // дата+время последнего запроса изображения
    private Date lastAccessTime;
    // счетчик просмотров изображения
    private int views;
    // публичное или скрытое изображение
    private boolean privacy;
    // пользовательский рейтинг изображения
    private float rating = 0.0f;
    private int totalUserMark = 0;
    private int userMarkCounter = 0;
    // набор информационных тэгов
    private List<ImageTag> tags;
    
    public Image() { }
    
    public Image(int id, String title, String description, String url, String removingLink, User user,
            Date uploadedTime, Date lastAccessTime, int views, boolean privacy, 
            int totalUserMark, int userMarkCounter) {
        this.id = id;
        this.title = title;
        this.description = description;
        this.url = url;
        this.removingLink = removingLink;
        this.owner = user;
        this.uploadedTime = uploadedTime;
        this.lastAccessTime = lastAccessTime;
        this.views = views;
        this.privacy = privacy;
        this.totalUserMark = totalUserMark;
        this.userMarkCounter = userMarkCounter;
        if (userMarkCounter > 0) 
            rating = totalUserMark/userMarkCounter;
        else 
            rating = 0.0f;
    }
    
    public String getDescription() {
        return description;
    }   
    public int getId() {
        return id;
    }  
    public Date getLastAccessTime() {
        return lastAccessTime;
    }
    public User getOwner() {
        return owner;
    }
    public boolean getPrivacy() {
        return privacy;
    }
    public float getRating() {
        return rating;
    }
    public String getRemovingLink() {
        return removingLink;
    }
    public List<ImageTag> getTags() {
        if (tags != null)
            return tags;
        else
            return tags = new java.util.ArrayList<ImageTag>();
    }
    public String getTitle() {
        return title;
    }
    public Date getUploadedTime() {
        return uploadedTime;
    }
    public String getUrl() {
        return url;
    }
    public int getViews() {
        return views;
    }
    public int getTotalUserMark() {
        return totalUserMark;
    }
    public int getUserMarkCounter() {
        return userMarkCounter;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public void setId(int id) {
        this.id = id;
    }
    public void setLastAccessTime(Date lastAccessTime) {
        this.lastAccessTime = lastAccessTime;
    }
    public void setOwner(User owner) {
        this.owner = owner;
    }
    public void setPrivacy(boolean privacy) {
        this.privacy = privacy;
    }
    public void setRemovingLink(String removingLink) {
        this.removingLink = removingLink;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public void setUploadedTime(Date uploadedTime) {
        this.uploadedTime = uploadedTime;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public void setViews(int views) {
        this.views = views;
    }
    public void setTotalUserMark(int tum) {
        this.totalUserMark = tum;
    }
    public void setUserMarkCounter(int umc) {
        this.userMarkCounter = umc;
    }
}
